package br.com.sebrae.pr.sgp.dao;

import java.util.List;

import javax.ejb.Remote;

import br.com.sebrae.pr.sgp.entities.Cliente;
import br.com.sebrae.pr.sgp.entities.Usuario;

/**
 * Interface de acesso ao banco para entidades do tipo {@link Usuario}
 * 
 * @author Tanaka
 * 
 */
@Remote
public interface ClienteDAO {

	/**
	 * Pesquisa o {@link Cliente} com dado id
	 * 
	 * @param id
	 * @return
	 */
	public Cliente pesquisarPorId(final long id);

	/**
	 * Pesquisa o {@link Cliente} com dado nmeLogin
	 * 
	 * @param nmeLogin
	 * @return
	 */
	public Cliente pesquisarPorLogin(final String nmeLogin);

	/**
	 * Salva ou atualiza determinado {@link Cliente}
	 * 
	 * @param cliente
	 * @return
	 */
	public Cliente salvarOuAtualizar(final Cliente cliente);

	/**
	 * Pesquisa os Clientes utilizando os campos do {@link Cliente} parâmetro como filtros. Utiliza LIKE.
	 * 
	 * @param cliente
	 * @return
	 */
	public List<Cliente> efetuarPesquisa(final Cliente cliente);

	/**
	 * Pesquisa os nome dos Clientes utilizando um parametro de texto como filtro. Utiliza LIKE.
	 * 
	 * @param texto
	 * @return list<String>
	 */
	public List<String> autoComplete(String texto);

	/**
	 * Pesquisa lista de objetos Cliente utilizando um parametro de texto como filtro. Utiliza LIKE.
	 * 
	 * @param texto
	 * @return list<String>
	 */
	public List<Cliente> autoCompleteObjeto(String texto);
}
